package com.tengfei.blogsystem.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

/**
 * @version v1.0
 * @author} feige
 * @date 2021-10-14-20:53
 * @description
 */
@Configuration
public class Swagger2Configuration {


    // 版本
    public static final String VERSION = "1.0.0";

    /**
     * 门户接口管理
     */
    @Bean(name = "portal")
    public Docket portalApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(portalApiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.tengfei.blogsystem.controller.portal"))
                .paths(PathSelectors.any()) //设置那些接口加入文档
                .build()
                .groupName("门户中心");
    }

    private ApiInfo portalApiInfo() {
        return new ApiInfoBuilder()
                .title("博客系统门户接口文档文档")    // 设置文档标题
                .description("门户接口文档")    // 设置文档描述
                .version(VERSION)   // 设置文档版本信息
                .build();
    }

    /**
     * 用户接口管理
     */
    @Bean("user")
    public Docket userApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(userApiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.tengfei.blogsystem.controller.user"))
                .paths(PathSelectors.any()) //设置那些接口加入文档
                .build()
                .groupName("用户中心");
    }

    private ApiInfo userApiInfo() {
        return new ApiInfoBuilder()
                .title("博客系统用户接口文档")    // 设置文档标题
                .description("用户接口文档")    // 设置文档描述
                .version(VERSION)   // 设置文档版本信息
                .build();
    }

    /**
     * 管理中心接口管理
     */
    @Bean("admin")
    public Docket adminApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(adminApiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.tengfei.blogsystem.controller.admin"))
                .paths(PathSelectors.any()) //设置那些接口加入文档
                .build()
                .groupName("管理中心");
    }

    private ApiInfo adminApiInfo() {
        return new ApiInfoBuilder()
                .title("博客系统管理中心接口文档")    // 设置文档标题
                .description("管理中心接口文档")    // 设置文档描述
                .version(VERSION)   // 设置文档版本信息
                .build();
    }
}
